package com.huluobo.a2202mvvm_im_douyindemo.utils;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.huluobo.a2202mvvm_im_douyindemo.R;

/**
 * Created by LC on 2024/5/7.
 */
public class ImageLoader {
    private static ImageLoader imageLoader;

    private ImageLoader() {
    }

    public static ImageLoader getInstance() {
        if (imageLoader == null) {
            synchronized (ImageLoader.class) {
                if (imageLoader == null) {
                    imageLoader = new ImageLoader();
                }
            }
        }
        return imageLoader;
    }

    /**
     * 加载普通带占位图和错误图的图片
     *
     * @param context   上下而
     * @param url       地址
     * @param imageView 目标imageView
     */
    public void loadImage(Context context, String url, ImageView imageView) {
        Glide.with(context)
                .load(url)
                .skipMemoryCache(true)//跳过内存缓存
                .placeholder(new ColorDrawable(Color.GRAY))//占位图,当图片没有加载出来时,会优先显示占位图
                .error(R.drawable.baseline_error_24)
                .into(imageView);
    }

    public void loadCircleImage(Context context, String url, ImageView imageView) {
        Glide.with(context)
                .load(url)
                .skipMemoryCache(true)//跳过内存缓存
                .placeholder(new ColorDrawable(Color.GRAY))//占位图,当图片没有加载出来时,会优先显示占位图
                .error(R.drawable.baseline_error_24)
                .transform(new CircleCrop(), new CenterCrop())//圆形加载器,中心加载器
                .into(imageView);
    }

    public void loadRoundImage(Context context, String url, ImageView imageView, int radius) {
        Glide.with(context)
                .load(url)
                .skipMemoryCache(true)//跳过内存缓存
                .placeholder(new ColorDrawable(Color.GRAY))//占位图,当图片没有加载出来时,会优先显示占位图
                .error(R.drawable.baseline_error_24)
                .transform(new RoundedCorners(radius), new CenterCrop())//圆角加载器,中心加载器
                .into(imageView);
    }
}
